#ifndef UTILS_LOGGER_H
#define UTILS_LOGGER_H

#include <string>
#include <iostream>
#include <fstream>
#include <cstdarg>
#include <boost\noncopyable.hpp>

namespace utils
{
	class file;

	class logger: public boost::noncopyable
	{
	public:
		logger(const std::string& module_name):
			module_name_(module_name) {}
		void log_debug(const char* format, ...);
		void log_info(const char* format, ...);
		void print(const std::string& level, const char* format, va_list args);
	private:
		std::string module_name_;
	};

	class file
	{
	public:
		void write(std::string str);
		static file& instance();
		~file();
	private:
		file(const std::string& file_name);
		std::ofstream stream;
	};
}
#endif